/**
 * 方法装饰器
 * @param targetClassPrototype 【RoleService.prototype】
 * @param methodName
 * @param methodDecri 【es5\es6中的数据属性，如可读等，可点进去看】
 */

function MyMethodDecorator(
  targetClassPrototype: any,
  methodName: string,
  methodDecri: PropertyDescriptor
) {
  console.log('类属性 targetClassPrototype', targetClassPrototype);
  console.log('methodName', methodName);
  console.log('数据属性', methodDecri);
  // methodDecri.value(); ---- DistribRoles()函数本身
  methodDecri.value();
}

// 目标类
class RoleService {
  public roleName: string = '管理员';
  constructor() {}
  @MyMethodDecorator
  DistribRoles() {
    console.log('分配角色');
  }
}
